Energy efficient scheduling system and method

ABSTRACT

An energy efficient scheduling system and method is disclosed. In some embodiments, a method includes receiving, with a processor, a request for execution of an application. The method also includes receiving, based on the request, a scheduling policy. Additionally, the method includes for each of a plurality of datacenters, determining one or more datacenter attributes associated with each respective datacenter. The method also includes selecting one of the plurality of datacenters to execute the application based, at least in part, on the request, the scheduling policy, and the datacenter attributes and executing the application at the selected datacenter.

TECHNICAL FIELD OF THE INVENTION

The present disclosure relates generally to application scheduling, andmore particularly to an energy efficient scheduling system and method.

BACKGROUND OF THE INVENTION

Many industries are moving towards a status-quo in relation to energysavings, both for environmental safeguards as well as for financialbetterment. Saving energy is not only a corporate social responsibilityfor enterprises, but also a business need. Corporations have become allthe more sensitive towards energy savings both for Data Centers as wellas the overall building spaces. This is one aspect where enterprises canbe become more energy efficient on the business front as energy costsaccount for a non-negligible percentage of the company's spending. Mostbig enterprises have large data-centers/computational capabilitiesacross the globe where energy-saving opportunities are not realized.

SUMMARY OF THE INVENTION

In accordance with the present disclosure, the disadvantages andproblems associated with prior systems and methods for energy efficientscheduling systems and methods have been substantially reduced oreliminated.

In accordance with a particular embodiment of the present disclosure, amethod includes receiving, with a processor, a request for execution ofan application. The method also includes receiving, based on therequest, a scheduling policy. Additionally, the method includes for eachof a plurality of datacenters, determining one or more datacenterattributes associated with each respective datacenter. The method alsoincludes selecting one of the plurality of datacenters to execute theapplication based, at least in part, on the request, the schedulingpolicy, and the datacenter attributes and executing the application atthe selected datacenter.

In accordance with another embodiment of the present disclosure, asystem includes a plurality of datacenters, wherein each of therespective datacenter is associated with one or more datacenterattributes. The system also includes a scheduling server operable toreceive a request for execution of an application. The scheduling serveris also operable to receive, based on the request, a scheduling policyand select one of the plurality of datacenters to execute theapplication based, at least in part, on the request, the schedulingpolicy, and the datacenter attributes. The system also includes a policyserver operable to transmit the scheduling policy to the schedulingserver. Additionally, the system includes a server located at theselected datacenter, wherein the server is operable to execute theapplication.

In accordance with yet another embodiment of the present disclosure, acomputer readable non-transitory medium is encoded with logic, and thelogic is operable, when executed on a processor, to receive a requestfor execution of an application. The logic is further operable toreceive, based on the request, a scheduling policy. The logic is alsooperable to, for each of a plurality of datacenters, determine one ormore datacenter attributes associated with each respective datacenter.Additionally, the logic is operable to select one of the plurality ofdatacenters to execute the application based, at least in part, on therequest, the scheduling policy, and the datacenter attributes andexecute the application at the selected datacenter.

Technical advantages of particular embodiments of the present disclosureinclude providing numerous opportunities for energy cost savings andenhancing an enterprise's use of renewable sources. As a result,particular embodiments allow companies to significantly reduce energycosts and/or reduce the carbon footprint associated with processingcomputing jobs. Utilizing embodiments of the present disclosure,enterprises may gain control of resource utilization, and directapplication execution according to predefined policies. Predeterminedand configurable policies allow an enterprise to control their energyusage, weighting such factors as time, carbon footprint, corporateimage, cost, profit and revenue generating opportunities, performance,and scalability. Enterprises may change the weights associated with eachpolicy, thus enabling an enterprise to change energy consumption andcarbon usage patterns over time.

Other technical advantages of the present disclosure will be readilyapparent to one skilled in the art from the following figures,description, and claims. Moreover, while specific advantages have beenenumerated above, various embodiments may include all, some, or none ofthe enumerated advantages.

BRIEF DESCRIPTION OF THE DRAWINGS

For a more complete understanding of the present invention and itsadvantages, reference is now made to the following description taken inconjunction with the accompanying drawings, in which:

FIG. 1 illustrates a system in accordance with particular embodiments ofthe present disclosure, including a scheduling server, a policy server,datacenters, servers, clients, and a network;

FIG. 2 illustrates the scheduling server illustrated in FIG. 1 in moredetail, including aspects of the present disclosure; and

FIG. 3 is a flow chart illustrating a particular operation of the systemof FIG. 1 in accordance with particular embodiments of the presentdisclosure.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1 illustrates a system 10 in accordance with embodiments of thepresent disclosure. System 10 comprises datacenters 20, servers 30,scheduling server 40, policy server 50, clients 60, and network 70.System 10 is generally operable to optimally schedule the execution ofapplications at a particular datacenter 20 to provide the most energyefficient application execution, according to predetermined policies. Tooptimally schedule the execution of applications, policy server 50stores scheduling policy 55 that scheduling server 40 uses to scheduleand/or execute applications. Scheduling server 40 may determine one ormore datacenter attributes 45. Based, at least in part, on a request 62from client 62, datacenter attributes 45 and scheduling policy 55,scheduling server 40 determines an appropriate datacenter 20 to executean application. Scheduling server 40 may then schedule execution of theapplication at the selected datacenter 20.

Datacenters 20 a, 20 b, and 20 c (which may be referred to individuallyas “datacenter 20” or collectively as “datacenters 20”) are facilitiesthat each house a collection of servers, computers, networkingequipment, data storage systems, security devices, power supplies and/orany other appropriate hardware, software and/or other equipment suitableto facilitate the execution applications 14. In some embodimentsdatacenter 20 represents a processing site at which applications 14 areexecuted. As shown in FIG. 1, datacenters 20 may be geographicallydispersed. In some embodiments, datacenter 20 may be geographicallyclustered. In particular embodiments, datacenter 20 houses server 30,scheduling server 40, and/or policy server 50, each of which may executeapplication 14 requested by client 60. To provide electricity todatacenter 20 and the components therein, datacenter 20 is connected toan electrical power provider. The electrical power provider may chargedifferent rates to datacenter 20 during different times of the day. Forexample, a price charged for electricity may be more expensive duringpeak-demand times of the day, and less expensive during off-peak times.The price charged may be measured as a rate. For example, the price ofelectricity may be measured in dollars per kilowatt-hours. Thus, thepeak-demand price, for example, may be $0.25 per kilowatt-hours, and theoff-peak price may be $0.15 per kilowatt hours. In some embodiments, theprice of electricity charged to datacenter 20 fluctuates dynamicallyduring the day in response to electricity demand.

Servers 30 are housed in datacenters 20 and execute applications 14requested by clients 60. Servers 30 may also include one or morecomputer input devices, such as a keyboard, trackball, or a mouse,and/or one or more Graphical User Interfaces (GUIs), through which auser may interact with the logic executing on processor 32. In general,however, server 30 may include any appropriate combination of hardware,software, and/or encoded logic suitable to perform the describedfunctionality. In some embodiments, server 30 may comprise ageneral-purpose personal computer (PC), a Macintosh, a workstation, aUnix-based computer, a server computer, or any suitable processingdevice. The functions and operations described above may be performed bya pool of servers 30. A server 30 may comprise memory 34 and processor32.

Memory 34 comprises any suitable arrangement of random access memory(RAM), read only memory (ROM), magnetic computer disk, CD-ROM, or othermagnetic or optical storage media, or any other volatile or non-volatilememory devices that store one or more files, lists, tables, or otherarrangements of information. Although FIG. 1 illustrates memory 34 asinternal to server 30, it should be understood that memory 34 may beinternal or external to server 30, depending on particularimplementations. Memory 34 may be separate from or integral to othermemory devices to achieve any suitable arrangement of memory devices foruse in system 10.

Memory 34 stores applications 14 and data associated with applications14. In some embodiments, memory 34 stores an amount of watts consumed byprocessor 32 for a predetermined unit of time. The amount of wattsconsumed by processor 32 may be measured as watts per Central ProcessingUnit (CPU) cycle. Memory 34 may also store an amount of CPU cycles aparticular application 14 utilizes during execution. Memory 34 alsostores logic 36. Logic 36 generally comprises rules, algorithms, code,tables, and/or other suitable instructions for executing applications 14and storing and/or generating data associated with applications 14.

Memory 34 is communicatively coupled to processor 32. Processor 32 isgenerally operable to execute logic 36 to execute applications 14requested by clients 60, and/or determine a utilization of server 30.Processor 32 comprises any suitable combination of hardware and softwareimplemented in one or more modules to provide the described function oroperation.

Scheduling server 40 selects an appropriate datacenter 20 from among aplurality of datacenters 20 to execute a requested application 14 based,at least in part, on scheduling policy 55, request 62, and/or datacenterattributes 45. Scheduling server 40 may receive scheduling policy 55from policy server 50. Datacenter attributes 45 indicate one or morecharacteristics, aspects, and/or variables associated with one or moredatacenters. In particular embodiments, datacenter attributes 45indicates one or more of: (1) the percentage utilization of servers 30in a respective datacenter 20; (2) the overall utilization of theparticular datacenter 20; (3) a cooling/heating index of a particulardatacenter 20; (4) power availability; (5) the optimal usage ofrenewable energy for operations as well as heating and/or cooling ofdatacenter 20; (6) power unit price profiling based on the localregulations or provider; (7) peak pricing and off-peak pricinginformation; (8) historical and/or real time climatic factors of thearea supporting energy usage; (9) energy supply availability for aspecific time and duration based on local constraints and demand.Datacenter attributes 45 may represent information stored in anelectronic file in memory 44, information stored in a relationaldatabase stored in memory 44, and/or information stored in any suitablemanner. In particular embodiments, scheduling server 40 receivesdatacenter attributes 45 from user input, from servers 30 located indatacenter 20, and/or from any other suitable component of system 10.Based on scheduling policy 55, request 62, and/or datacenter attributes45, scheduling server 40 may select an appropriate datacenter 20 atwhich client 60 should execute a requested application 14, and mayinstruct client 60 to execute a requested application 14 at the selecteddatacenter 20. In particular embodiments, scheduling server 40 mayexecute a requested application 14 at the selected datacenter 20, andtransmit a display, print-out, data, information, audio, video, and/orany other suitable results of executing application 14. In someembodiments, scheduling server 40 comprises a general-purpose personalcomputer (PC), a Macintosh, a workstation, a Unix-based computer, aserver computer, or any suitable processing device. The functions andoperations described above may be performed by a pool of schedulingservers 40.

Policy server 50 stores scheduling policy 55 and transmits schedulingpolicy 55 to scheduling server 40. In particular embodiments, policyserver 50 may store one or more scheduling policies 55, depending on theoverall needs, capabilities, and/or configuration of system 10.Scheduling server 40 may utilize a particular scheduling policy 55 basedon the particular application 14 being executed, the particulardatacenter 20 application 14 will be executed at, the time of dayrequested, the particular user requesting execution of application 14,and/or any other relevant considerations, factors, and/or variables. Ingeneral scheduling policy 55 indicates one or more constraints, rules,procedures, and/or any other suitable policies that scheduling server 40uses to facilitate the selection of a particular datacenter 20 and theexecution of application 14. In some embodiments, policy server 50includes a user interface to a software application running on policyserver 50 that enables a user to create scheduling policy 55 for theenergy efficient execution of applications 14 in system 10. A userinterface may include one or more user input devices such as a keyboard,trackball, or a mouse, and/or one or more Graphical User Interfaces. Insome embodiments, policy server 50 comprises a general-purpose personalcomputer (PC), a Macintosh, a workstation, a Unix-based computer, aserver computer, or any suitable processing device. The functions andoperations described above may be performed by a pool of policy servers50.

Memory 54 comprises any suitable arrangement of random access memory(RAM), read only memory (ROM), magnetic computer disk, CD-ROM, or othermagnetic or optical storage media, or any other volatile or non-volatilememory devices that store one or more files, lists, tables, or otherarrangements of information, including scheduling policy 55. AlthoughFIG. 1 illustrates memory 54 as internal to policy server 50, it shouldbe understood that memory 54 may be internal or external to policyserver 50, depending on particular implementations. Memory 54 may beseparate from or integral to other memory devices to achieve anysuitable arrangement of memory devices for use in system 10. Memory 54stores logic 56. Logic 56 generally comprises rules, algorithms, code,tables, and/or other suitable instructions for storing and/or schedulingpolicy 55.

Memory 54 is communicatively coupled to processor 52. Processor 52 isgenerally operable to execute logic 56 to generate, receive and/ortransmit scheduling policy 55. Processor 52 comprises any suitablecombination of hardware and software implemented in one or more modulesto provide the described function or operation.

Clients 60 (each of which may be referred to individually as “client 60”or collectively as “clients 60”) may transmit request 62 to schedulingserver 40 to execute application 14. Request 62 represents any form ofdata transmission, including information transmitted in an InternetProtocol packet, Ethernet frame, Asynchronous Transfer Mode cell, FrameRelay frame, and/or any other suitable mode of data communication. Insome embodiments, application 14 represents any suitable software and/orlogic executable on server 30. Application 14 represents, for example, aword processing program, a data backup job, data storage, a databasemanagement system, an email program, an interne browser, logisticsmanagement, a client relations management program, and/or batchprocessing data. In particular embodiments, clients 60, transmit request62 to scheduling server 40 as part of executing application 14 itself.In particular embodiments, clients 60 represent general orspecial-purpose computers operating software applications capable ofperforming the above-described operations. For example, clients 60 mayinclude, but are not limited to, laptop computers, desktop computers,portable data assistants (PDAs), and/or portable media players. In someembodiments, client 60 comprises general-purpose personal computer (PC),a Macintosh, a workstation, a Unix-based computer, a server computer, orany suitable processing device. Additionally, in particular embodiments,client 60 may include one or more processors operable to executecomputer logic and/or software encoded on tangible media that performsthe described functionality. Client 60 may also include one or morecomputer input devices, such as a keyboard, trackball, or a mouse,and/or one or more Graphical User Interfaces (GUIs), through which auser may interact with the logic executing on the processor of client60. In general, however, client 60 may include any appropriatecombination of hardware, software, and/or encoded logic suitable toperform the described functionality. Additionally, clients 60 may beconnected to or communicate with scheduling server 40 and/or datacenters20 directly or indirectly over network 70. Clients 60 may couple tonetwork 70 through a dedicated wired or wireless connection, or mayconnect to network 70 only as needed to receive, transmit, or otherwiseexecute applications. Although FIG. 1 illustrates, for purposes ofexample, a particular number and type of clients 60, alternativeembodiments of system 10 may include any appropriate number and type ofclients 60, depending on the size of a particular enterprise.

Network 70 represents any number and combination of wireline and/orwireless networks suitable for data transmission. Datacenters 20, server30, scheduling server 40, policy server 50, and clients 60 arecommunicatively coupled via one or more networks 70. In particularembodiments, clients 60 may communicatively couple to datacenters 20and/or scheduling server 40 via network 70. Network 70 may, for example,communicate internet protocol packets, frame relay frames, asynchronoustransfer mode cells, and/or other suitable information between networkaddresses. Network 70 may include one or more intranets, local areanetworks, metropolitan area networks, wide area networks, cellularnetworks, all or a portion of the Internet, and/or any othercommunication system or systems at one or more locations.

In operation, client 60 transmits request 62 to scheduling server 40 toexecute application 14. Request 12 may be transmitted over network 70,and may include information indicating the type of requested application14, an amount of memory and/or CPU processing power required by therequested application, an amount of data that will be used during theexecution the application 14, a preferred and/or mandatory time at whichrequested application 14 should be processed, and/or any other relevantconsiderations, factors, or variables that facilitate the determinationof an energy-efficient execution.

Scheduling server 40 may be configured to execute applications 14 in anenergy efficient manner explicitly or implicitly. For example, inparticular embodiments, client 60 may transmit request 62 that includesan explicit request for an energy-efficient execution. As discussedfurther below, scheduling server 40 selects a particular datacenter 20to execute application 14, and may transmit an indication of theselected datacenter 20 and a selected execution time to client 60.Client 60 may then confirm the execution of the requested application 14at the selected execution time or request an alternative datacenter 20and/or execution time. In some embodiments, system 10 may be configuredto schedule applications 14 in an energy efficient manner, whether ornot requested by a particular client 60. As a result, client 60 maysimply transmit request 62 that requests execution of application 14,and, as discussed further below, datacenter 20 selects an energyefficient datacenter 20 and/or selects an energy efficient time toexecute application 14. Whether explicit or implicit, scheduling server40 may then determine the most energy-efficient manner of executing therequested application 14.

Scheduling server 40 receives request 62 from client 60, and selects aparticular datacenter 20 among a plurality of datacenters 20 at which toexecute the requested application 14. Scheduling server 40 may select aparticular datacenter 20 based, at least in part, on scheduling policy55 received from policy server 50, request 62, and datacenter attributes45.

At appropriate points during operation, scheduling server 40 receivesinformation associated with attributes of each respective datacenter 20.Scheduling server 40 may store attributes associated with eachrespective datacenter 20 in datacenter attributes 45. As a result,scheduling server 40 may store datacenter attributes 45 associated witheach respective datacenter 20. As discussed above, datacenter attributes45 may indicate one or more of the following:

(1) The percentage utilization of server 30 in a respective datacenter20. This attribute indicates the most recent and/or historical measureof the amount of resources being utilized by servers 30 in a particulardatacenter 20. This attribute may indicate a utilization metric for eachserver 30 in the particular datacenter 20. In some embodiments, ifutilization is near a maximum at a first server 30 in the particulardatacenter 20, scheduling server 40 may schedule the execution ofapplication 14 at a second server 30 in the particular datacenter 20,even if execution at the first server 30 is more energy efficient. Thus,scheduling server 40 is able to select a particular server 30 withresources available to execute application 14.

(2) The overall utilization of the particular datacenter 20. Thisattribute indicates the most recent and/or historical measure of theamount of resources currently being utilized by a particular datacenter20. Overall utilization may represent an aggregate utilization of allservers 30 housed in datacenter 20. In some embodiments, the overallutilization indicates the percentage of resources used to power server30 in datacenter 20, as well as resources used to power other componentsof datacenter 20 (such as, for example, heating or air conditioningequipment, electronic data backups, and/or networking equipment). Thus,scheduling server 40 is able to select a particular datacenter 20 thatcurrently has resources available to execute application 14.

(3) A cooling/heating index of the datacenter 20. This attributeindicates a relative amount of electricity required to heat and/or coolthe interior of datacenter 20. Since server 30, and other electricalcomponents of datacenter 20 generate heat, in particular embodiments,cooling will be required to maintain datacenter 20 at an appropriateoperating temperature. Additional applications 14 executed at datacenter20 may raise the ambient temperature of the interior of a particulardatacenter 20, thus requiring additional cooling expense. Thus, in someembodiments, scheduling server 40 may execute application 14 in adatacenter 20 with lower heating and/or cooling costs.

(4) Power availability. This attribute indicates an amount of poweravailable to be supplied to datacenter 20. In certain embodiments, theamount of power able to be supplied by a local utility or power providermay be limited. The power supply may be limited by contract, powergeneration constraints, demand, and/or any other constraint. Moreover,power availability may be measured on a sliding scale. For example, moreelectricity may be available during off-peak times than during peakdemand times.

(5) The optimal usage of renewable energy. This attribute indicates theamount of power supplied to datacenter 20 that originates from renewablesources. Depending on the overall configuration of system 10, it may bepreferable to execute application 14 at a particular datacenter 20 thatis powered by a certain amount of renewable resources (such as, forexample, wind power, solar power, and/or geothermal power). Optimalusage of renewable energy may include a calculation of the overallcarbon emissions of a datacenter 20. Thus, scheduling server 40 mayexecute applications 14 in a comparatively low-carbon-intensity manner.

(6) Power unit price profiling based on the local regulations orprovider. This attribute indicates a price paid for electricity suppliedto datacenter 20. It may be specified in dollars per kilowatt-hours ofelectricity, and may vary depending on the particular type of source,whether renewable, or non-renewable, generating the electricity. Forexample, electricity supplied from a coal-fired power plant may cost$0.10 per kilowatt-hour, while electricity supplied from a wind-poweredsource may cost $0.18 per kilowatt-hour.

(7) Peak pricing and off-peak pricing information. This attributeindicates a price for electricity during peak demand times and/or duringoff-peak demand times. For example, electricity supplied to a particulardatacenter 20 may cost $0.10 per kilowatt-hour during off-peak times,and $0.20 per hour during peak demand times. Using peak pricing andoff-peak pricing information, and to the extent possible, schedulingserver 40 may schedule application 14 to execute during the lowest costtime period.

(8) Historical and/or real time climatic factors of the area supportingenergy usage. This attribute indicates historical and/or real timeinformation associated with the climate where a particular datacenter 20is located. In some embodiments, it may be less expensive to executedapplication 14 at a location where the climate is cold, since coolingwould be virtually free. Similarly, at a datacenter 20 that isexperiencing a hot day, cooling may be very expensive, and schedulingserver 40 may execute application 14 at an alternative datacenter 20where temperatures are more favorable for energy efficient execution ofapplication 14.

(9) Energy supply availability for a specific time and duration based onlocal constraints and demand. This attribute indicates an amount ofpower able to be supplied to a particular datacenter 20 at particulartimes and for particular durations. In certain embodiments, the amountof power able to be supplied by a local utility or power provider may belimited during particular times of the day, especially duringpeak-demand periods. Moreover, a particular datacenter 20 may requirelarge amounts of power, depending on the overall size of the relevantdatacenter 20 and the types of processing being performed. Suchconstraints may be beyond the control of an enterprise in which system10 is operating. Thus, based on expected power utilization ofapplication 14, scheduling server 40 may schedule application 14 at adatacenter 20 where the power required to execute application 14 isavailable.

Based on information indicated in request 62, scheduling server 40requests a particular scheduling policy 55 from policy server 50. Asdiscussed above, scheduling policies 55 are used for both the explicitscheduling requests by client 60 as well as implicit scheduling requestsby scheduling server 40. In particular embodiments, scheduling policy 55defines at what time of the day applications 14 can be executed and atwhat particular datacenters 20 applications 14 can be executed.Scheduling policies 55 may be created by an operator of system 10. As aresult, scheduling server 40 may receive an appropriate policy 55 frompolicy server 50. A particular scheduling policy 55 may define policiesfor a particular type of application 14. For example, payroll processingmay be extremely resource intensive, and last for a few hours. Aparticular scheduling policy 55 associated with a payroll processingapplication may state that it should not be run during business hours,that a selected datacenter 20 must have sufficient resources to finishexecution of the application within four hours, and that 20% of theenergy supplied to execute the payroll processing application comes fromrenewable sources. Thus, if a user at client 60 transmits request 62indicating a request to execute a payroll processing application duringbusiness hours, the request may be denied. Scheduling server 40 mayindicate an alternative time to client 60, which may be confirmed by auser at client 60, or may silently delay execution of the payrollprocessing application until the policies indicated by scheduling policy55 can be met. As another example, a particular policy 55 may definepolicies for a particular low-priority user. Thus, particular schedulingpolicy 55 associated with this user may indicate that all applications14 requested by this user will be executed at the lowest-cost datacenter20 and lowest-cost execution time. Policy server 50 may transmitscheduling policy 55 to scheduling server 40 in response to a requesttransmitted from scheduling server 40 or at any suitable time.

When a user at client 60 transmits request 62 that indicates an explicitscheduling request to scheduling server 40, the request can be verifiedfrom the policy perspective. For example, if the user sends a request toexplicitly scheduling a backup job from an energy efficiency perspectiveand if the most efficient datacenter 20 is in “zone 1”, and if aparticular scheduling policy 55 indicates not to schedule any backupjobs in the zone 1 during 12 noon to 6 p.m., scheduling server 40 checksif it is acceptable for the user to have the job done in a time frameother than the one specified by the policy engine. If scheduling policy55 determines that it is acceptable, only then should the job bescheduled appropriately.

For implicit energy-efficiency scheduling, scheduling server 40 can alsoconsult policy server 50 to determine automatically where there is anopportunity to save energy be implicitly moving application execution.In general, it is policy server 50 that governs how efficiency isachieved and maintained and through which datacenters 20.

Based on request 62, datacenter attributes 45 and/or scheduling policy55, scheduling server 40 selects an appropriate execution time toexecute the requested application 14 and a particular datacenter 20 atwhich to execute application 14. Once selected, scheduling server 40 mayexecute the application at the selected datacenter 20 at the selectedexecution time. To execute application 14, scheduling server 40 mayinstall a virtual software environment on a particular server 30. Insome embodiments, scheduling server 40 may install a virtual machine ona particular server 30. For example, scheduling server 40 may install aninstance of VMWare on a particular server 30 at an appropriate time,including just prior to executing the requested application 14. Theinstalled virtual machine may be uninstalled after the requestedapplication 14 has completed execution. In some embodiments, schedulingserver 40 may install a virtual machine on multiple servers 30, thusproviding for pooled execution of application 14. Thus, server 30 may begrouped by geographical and/or any other logical grouping that wouldfacilitate setting up and working with policies. In some embodiments,scheduling policy 55 can define an event which causes applications 14 tobe execute on a specific server 30 or a group of servers 30, a virtualmachine executing on servers 30 and/or a cloud.

By scheduling the execution of applications 14 at an energy-efficienttime and at an energy efficient datacenter 20, scheduling server 40 mayprovide numerous opportunities for energy cost savings and to enhance anenterprise's use of renewable sources. As a result, system 10 allowcompanies to significantly reduce energy costs and/or reduce the carbonfootprint associated with processing computing jobs. Utilizing system10, enterprises may gain control of resource utilization, and directapplication execution according to predefined policies. Predeterminedand configurable policies allow an enterprise to control their energyusage, weighting such factors as time, carbon footprint, corporateimage, cost, profit and revenue generating opportunities, performance,and scalability. Enterprises may change the weights associated with eachpolicy, thus enabling an enterprise to change energy consumption andcarbon usage patterns over time. As a result, system 10 may providenumerous operational benefits. Nonetheless, particular embodiments mayprovide some, none, or all of these operational benefits, and mayprovide additional operational benefits.

Modifications, additions, or omissions may be made to system 10 withoutdeparting from the scope of the present disclosure. For example, when acomponent of system 10 determines information, the component maydetermine the information locally or may receive the information from aremote location. As another example, in the illustrated embodiment,servers 30, scheduling server 40, policy server 50, and clients 60 arerepresented as different components of system 10. However, the functionsof servers 30, scheduling server 40, policy server 50, and clients 60may be performed by any suitable combination of one or more servers orother components at one or more locations. In the embodiment where thevarious components are servers, the servers may be public or privateservers, and each server may be a virtual or physical server. The servermay include one or more servers at the same or at remote locations.Also, servers 30, scheduling server 40, policy server 50, and clients 60may include any suitable component that functions as a server.Additionally, system 10 may include any appropriate number of servers30, scheduling servers 40, price servers 50, and clients 60. Anysuitable logic may perform the functions of system 10 and the componentswithin system 10.

FIG. 2 is a block diagram illustrating aspects of the scheduling server40 discussed above with respect to FIG. 1. As discussed above,scheduling server 40 determines at which of a plurality of datacenters20 and a time at which to execute application 14 based, at least inpart, on datacenter attributes 45, scheduling policy 55, and request 62.Scheduling server 40 includes policy store 202, distributed job broker204, memory 206, logic 208, processor 210, and network interface 212.

In general, scheduling server 40 comprises any suitable combination ofhardware and/or software implemented in one or more modules to providethe described functions and operations. In some embodiments, schedulingserver 40 may comprise a general-purpose personal computer (PC), aMacintosh, a workstation, a Unix-based computer, a server computer, orany suitable processing device. In some embodiments, the functions andoperations described above may be performed by a pool of multiplescheduling servers 40.

Policy store 202 receives and stores scheduling policy 55 from policyserver 50. In particular embodiments, policy server 50 may store one ormore scheduling policies 55, depending on the overall needs,capabilities, and/or configuration of system 10. Policy store 202 mayrequest a particular scheduling policy 55 associated with a user, aparticular application 14, datacenter 20, and/or an execution time frompolicy server 50. Distributed job broker 504 retrieves policy store 202for a particular scheduling policy 55 to facilitate appropriatescheduling of execution of applications 14. Policy store 202 retrievesand/or stores a particular scheduling policy 55 from policy server 50based on the particular application 14 being executed, the particulardatacenter 20 application 14 will be executed at, the time of dayrequested, the particular user requesting execution of application 14,and/or any other relevant considerations, factors, and/or variables.Once distributed job broker 204 has scheduled execution of a particularapplication 14, policy store 202 may delete, erase, or otherwise removescheduling policy 55.

Distributed job broker 204 selects an appropriate datacenter 20 fromamong a plurality of datacenters 20 to execute a requested application14 based, at least in part, on scheduling policy 55, request 62, and/ordatacenter attributes 45. Distributed job broker 204 receives schedulingpolicy 55 from policy store 202. Distributed job broker 204 receivesdatacenter attributes 45 user input, from servers 30 located indatacenter 20, and/or from any other suitable component of system 10. Asdiscussed above, datacenter attributes 45 indicate one or morecharacteristics, aspects, and/or variables associated with one or moredatacenters 20. Based on scheduling policy 55, request 62, and/ordatacenter attributes 45, distributed job broker 204 selects anappropriate datacenter 20 to execute application 14 and an appropriatetime to execute application 14. In particular embodiments, the selectedexecution time may be different from a time indicated in request 62.Thus, distributed job broker 204 transmits to a requesting client 60 analternative time for executing application 14 than the one indicated inrequest 62. In some embodiments, distributed job broker 204 may select aparticular server 30 and/or a plurality of servers 30 to executeapplication 14. In other embodiments, distributed job broker 204 mayselect an appropriate datacenter 20 to execute application 14, anddatacenter 20 selects an appropriate server 30 to execute application14. Once selected, distributed job broker 204 may execute theapplication at the selected datacenter 20 and/or selected server 30 atthe selected execution time. To execute application 14, distributed jobbroker 204 may install a virtual software environment on a particularserver 30. In some embodiments, scheduling server 40 may install avirtual machine on a particular server 30. For example, distributed jobbroker 204 may install an instance of VMWare on a particular server 30at an appropriate time, including just prior to executing the requestedapplication 14. The installed virtual machine may be uninstalled afterthe requested application 14 has completed execution. In someembodiments, distributed job broker 204 may install a virtual machine onmultiple servers 30, thus providing for pooled execution of application14. In general, however, distributed job broker 204 may executeapplication 14 at the selected datacenter 20 and/or selected server 30in any appropriate manner.

Memory 206 comprises any suitable arrangement of random access memory(RAM), read only memory (ROM), magnetic computer disk, CD-ROM, or othermagnetic or optical storage media, or any other volatile or non-volatilememory devices that store one or more files, lists, tables, or otherarrangements of information. Although FIG. 2 illustrates memory 206 asinternal to scheduling server 40, it should be understood that memory206 may be internal or external to scheduling server 40, depending onparticular implementations. Memory 206 may be separate from or integralto other memory devices to achieve any suitable arrangement of memorydevices for use in system 10.

Memory 206 is generally operable to store request 62, datacenterattributes 45, scheduling policy 55 and/or any other informationassociated with datacenters 20, servers 30, and/or applications 14.Memory 206 is further operable to store logic 208.

Processor 210 is coupled to memory 206 and is generally operable toexecute logic 208 to receive request 62, scheduling policies 55,datacenter attributes 45, and, based, at least in part, on request 62,scheduling policy 55, and/or datacenter attributes 45, select aparticular datacenter 20 to execute application 14 and an appropriateexecution time. Processor 210 comprises any suitable combination ofhardware and software implemented in one or more modules to provide thedescribed function or operation.

Network interface 212 communicates information relevant to schedulingand/or executing applications 14 at datacenters 20. For example, networkinterface 212 receives scheduling policy 55 from policy server 50 andrequest 62 from client 60 through network 70. Network interface 212represents any port or connection, real or virtual, including anysuitable hardware and/or software that allows scheduling server 40 toexchange information with network 70, datacenters 20, policy server 50,clients 60 and/or or other components of system 10.

FIG. 3 is a flow diagram illustrating an operation in accordance with aparticular embodiment of system 10. In the illustrated example,operation begins at step 300, with scheduling server 40 receivingrequest 62 from client 60 to execute application 14. In someembodiments, request 62 includes information indicating the type ofapplication 14 requested, an amount of memory and/or CPU processingpower required by application 14, an amount of data that will be usedduring the execution application 14, a preferred and/or mandatory timeat which the application 14 should be executed, and/or any otherrelevant considerations, factors, or variables that facilitate energyefficient execution of application 14.

At step 302, scheduling server 40 receives scheduling policy 55 frompolicy server 50. As discussed above, based on information indicated inrequest 62, scheduling server 40 requests a particular scheduling policy55 from policy server 50. As a result, scheduling server 40 may receivean appropriate policy 55 from policy server 50 to determine anappropriate datacenter 20 and time to execute application 14. Aparticular scheduling policy 55 may define policies for a particulartype of application 14. Policy server 50 may transmit scheduling policy55 to scheduling server 40 in response to a request transmitted fromscheduling server 40 or at any suitable time.

At step 304, scheduling server 40 determines one or more datacenterattributes 45 associated with each of a plurality of datacenters 20. Inparticular embodiments, scheduling server 40 retrieves a particulardatacenter 20 from a list of datacenters 20 stored in memory 206.Scheduling server 40 additionally or alternatively retrieves datacenterattributes 45 associated with the selected datacenter 20 stored inmemory 206. For each datacenter 20, datacenter attributes 45 mayindicate one or more of (1) the percentage utilization of servers 30;(2) the overall utilization of the particular datacenter 20; (3) acooling/heating index of datacenter 20; (4) power availability; (5) theoptimal usage of renewable energy for operations as well as heatingand/or cooling of datacenter 20; (6) power unit price profiling based onthe local regulations or provider; (7) peak pricing and off-peak pricinginformation; (8) historical and/or real time climatic factors of thearea supporting energy usage; (9) energy supply availability for aspecific time and duration based on local constraints and demand.Particular datacenter attributes 45 may indicate any number and/orcombination of the foregoing attributes, and may indicate additionalattributes.

At step 306 scheduling server 40 selects one of the plurality ofdatacenters 20 to execute the application, based, at least in part, onrequest 62, scheduling policy 55, and datacenter attributes 45. Forexample, request 62 may include a request for a data backup applicationto be run for 3 hours. A particular scheduling policy 55 associated witha data backup application may indicate that it should not be run duringbusiness hours, that a selected datacenter 20 must have sufficientresources to finish execution of the application within four hours, andthat 10% of the energy supplied to execute the payroll processingapplication comes from renewable sources. Thus, if a user at client 60transmits request 62 indicating a request to execute a data backupapplication during business hours, the request may be denied. Schedulingserver 40 may indicate an alternative time to client 60, which may beconfirmed by a user at client 60, or may silently delay execution of thedata backup application until the data backup application can beexecuted without violating the policies indicated by scheduling policy55. If request 62 indicates a request to execute a data backupapplication after business hours, scheduling server 40 may select anappropriate datacenter 20 that satisfies the policies indicated inscheduling policy 55. Thus, scheduling server 40 selects a particulardatacenter 20 that has sufficient resources to finish execution withinfour hours, and that has 10% of its electricity supplied by renewablesources.

At step 308, application 14 is executed at the selected datacenter 20.In particular embodiments, scheduling server 40 may execute application14 at the selected datacenter 20 at an appropriate execution time. Toexecute application 14, scheduling server 40 may install a virtualsoftware environment on a particular server 30. In some embodiments,scheduling server 40 may install a virtual machine on a particularserver 30. For example, scheduling server 40 may install an instance ofVMWare on a particular server 30 at an appropriate time, including justprior to executing the requested application 14. The installed virtualmachine may be uninstalled after the requested application 14 hascompleted execution. In general however, scheduling server 40 mayexecute application 14 at the selected datacenter 20 and/or on theselected server 30 in any appropriate manner. In some embodiments,scheduling server 40 may install a virtual machine on multiple servers30, thus providing for pooled execution of application 14. Thus, server30 may be grouped by geographical and/or any other logical grouping thatwould facilitate setting up and working with policies. In someembodiments, scheduling policy 55 can define an event which causesapplications 14 to be executed on a specific server 30 or a group ofservers 30, a virtual machine executing on servers 30 and/or a cloud.

The steps illustrated in FIG. 3 may be combined, modified, or deletedwhere appropriate, and additional steps may also be added to thoseshown. Additionally, the steps may be performed in any suitable orderwithout departing from the scope of the present disclosure.

Although the present disclosure has been described with severalembodiments, numerous changes, variations, alterations, transformations,and modifications may be suggested to one skilled in the art, and it isintended that the present disclosure encompass such changes, variations,alterations, transformations, and modifications as fall within the scopeof the appended claims.

1. A method comprising: receiving, with a processor, a request forexecution of an application; receiving, with the processor, weightsassociated with a plurality of energy usage factors; determining basedon the request and the weights associated with the plurality of energyusage factors, a scheduling policy; for each of a plurlity ofdatacenters, determining one or more datacenter attributes associatedwith each respective datacenter; selecting one of the plurality ofdatacenters to execute the application based, at least in part, on therequest, the scheduling policy, and the datacenter attributes; executingthe application at the selected datacenter; and wherein the plurality ofenergy usage factors include the carbon footprint, corporate image,cost, and revenue generating opportunities.
 2. The method of claim 1,further comprising selecting a time, based at least in part on thescheduling policy, the request, and the one or more datacenterattributes, to execute the application; and wherein executing theapplication at the selected datacenter comprises executing theapplication at the selected datacenter at the selected time.
 3. Themethod of claim 1, wherein the one or more datacenter attributescomprise the percentage utilization of servers in the respectivedatacenter.
 4. The method of claim 1, wherein the one or more datacenterattributes comprise a cooling index of the respective datacenter.
 5. Themethod of claim 1, wherein the one or more datacenter attributescomprise an amount of renewable electricity powering the respectivedatacenter.
 6. The method of claim 1, wherein the one or more datacenterattributes comprise climatic information associated with an environmentin which the respective datacenter is located.
 7. The method of claim 1,wherein executing the application at the selected datacenter comprises:installing a virtual machine on a server at the selected datacenter;executing the application on the virtual machine installed on theserver; and removing the virtual machine from the server at the selecteddatacenter.
 8. A system comprising: a plurality of datacenters, whereineach of the respective datacenter is associated with one or moredatacenter attributes; a scheduling server operable to: receive arequest for execution of an application; receive, based on the request,a scheduling policy; and select one of the plurality of datacenters toexecute the application based, at least in part, on the request, thescheduling policy, and the datacenter attributes; a policy serveroperable to: receive weights associated with a plurality of energy usagefactors; determine, based on the request and the weights associated withthe plurality of energy usage factors, the scheduling policy; andtransmit the scheduling policy to the scheduling server; a serverlocated at the selected datacenter, wherein the server is operable toexecute the application; and wherein the plurality of energy usagefactors include the carbon footprint, corporate image, cost, and revenuegenerating opportunities.
 9. The system of claim 8, wherein thescheduling server is further operable to select a time, based at leastin part on the scheduling policy, the request, and the one or moredatacenter attributes, to execute the application; and wherein theserver is operable to execute the application by executing theapplication at the selected time.
 10. The system of claim 8, wherein theone or more datacenter attributes comprise the percentage utilization ofservers in the respective datacenter.
 11. The system of claim 8, whereinthe one or more datacenter attributes comprise a cooling index of therespective datacenter.
 12. The system of claim 8, wherein the one ormore datacenter attributes comprise an amount of renewable electricitypowering the respective datacenter.
 13. The system of claim 8, whereinthe one or more datacenter attributes comprise climatic informationassociated with an environment in which the respective datacenter islocated.
 14. The system of claim 8, wherein the scheduling server isfurther operable to: install a virtual machine on the server located atthe selected datacenter; remove the virtual machine from the server; andwherein the server located at the selected datacenter is operable toexecute the application by executing the application on the virtualmachine installed on the server.
 15. A computer readable non-transitorymedium encoded with logic, the logic operable, when executed on aprocessor to: receive a request for execution of an application; receiveweights associated with a plurality of energy usage factors; determine,based on the request and weights associated with the plurality of energyusage factors, a scheduling policy; for each of a plurality ofdatacenters, determine one or more datacenter attributes associated witheach respective datacenter; select one of the plurality of datacentersto execute the application based, at least in part, on the request, thescheduling policy, and the datacenter attributes; execute theapplication at the selected datacenter; and wherein the plurality ofenergy usage factors include the carbon footprint, corporate image,cost, and revenue generating opportunities.
 16. The computer readablenon-transitory medium of claim 15, wherein the logic is further operableto: select a time, based at least in part on the scheduling policy, therequest, and the one or more datacenter attributes, to execute theapplication; and execute the application by executing the application atthe selected time.
 17. The computer readable non-transitory medium ofclaim 15, wherein the datacenter attributes comprise the percentageutilization of servers in the respective datacenter.
 18. The computerreadable non-transitory medium of claim 15, wherein the datacenterattributes comprise a cooling index of the respective datacenter. 19.The computer readable non-transitory medium of claim 15, wherein the oneor more datacenter attributes comprise an amount of renewableelectricity powering the respective datacenter.
 20. The computerreadable non-transitory medium of claim 15, wherein the one or moredatacenter attributes comprise climatic information associated with anenvironment in which the respective datacenter is located.
 21. Thecomputer readable non-transitory medium of claim 15, wherein the logicis further operable to: install a virtual machine on the server locatedat the selected datacenter; execute the application by executing theapplication on the virtual machine installed on the server; and removethe virtual machine from the server.
 22. A system comprising: means forreceiving, with a processor, a request for execution of an application;means for receiving, with a processor, weights associated with aplurality of energy usage factors; means for determining, based on therequest and the weights associated with the plurality of energy usagefactors, a scheduling policy; means for determining, for each of aplurality of datacenters, one or more datacenter attributes associatedwith each respective datacenter, wherein the one or more datacenterattributes comprise; means for selecting one of the plurality ofdatacenters to execute the application based, at least in part, on therequest, the scheduling policy, and the datacenter attributes; means forexecuting the application at the selected datacenter; and wherein theplurality of energy usage factors include the carbon footprint,corporate image, cost, and revenue generating opportunities.